﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SPDocumentor.SPModel
{
    public class WebApplication
    {
        public SiteCollection[] SiteCols { get; set; }
        public ContentDatabase[] ContentDBS { get; set; }
        public string DisplayName { get; set; }

        public AlternateUrl AlternateUrls { get; set; }

        public System.Collections.ObjectModel.Collection<string> BlockedFiles { get; set; }

        public bool ClaimsEnabled { get; set; }

        public ApplicationProxyGroup ServiceApplicationProxyGroup { get; set; }

        public bool AlertsEnabled { get; set; }

        public bool AlertsLimited { get; set; }

        public int AlertsMaximum { get; set; }

        public int AlertsMaximumQuerySet { get; set; }

        public bool AllowAccessToWebPartCatalog { get; set; }

        public bool AllowAnalyticsCookieForAnonymousUsers { get; set; }

        public bool AllowContributorsToEditScriptableParts { get; set; }

        public bool AllowCreateDeclarativeWorkflow { get; set; }

        public bool AllowDesigner { get; set; }

        public bool AllowHighCharacterListFolderNames { get; set; }

        public bool AllowMasterPageEditing { get; set; }

        public bool AllowOMCodeOverrideThrottleSettings { get; set; }

        public bool AllowPartToPartCommunication { get; set; }

        public bool AllowRevertFromTemplate { get; set; }

        public bool AllowSaveDeclarativeWorkflowAsTemplate { get; set; }

        public bool AllowSavePublishDeclarativeWorkflow { get; set; }

        public bool AllowSelfServiceUpgradeEvaluation { get; set; }

        public bool AllowSilverlightPrompt { get; set; }

        public bool AlwaysProcessDocuments { get; set; }

        public ApplicationPool ApplicationPool { get; set; }

        public bool AutomaticallyDeleteUnusedSiteCollections { get; set; }

        public string[] BlockedFileExtensions { get; set; }

        public bool BrowserCEIPEnabled { get; set; }

        public string[] AllowedInlineDownloadedMimeTypes { get; set; }

        public bool CanRenameOnRestore { get; set; }

        public bool CanSelectForBackup { get; set; }

        public bool CanSelectForRestore { get; set; }

        public bool CanUpgrade { get; set; }

        public int CascadeDeleteMaximumItemLimit { get; set; }

        public int CascadeDeleteTimeoutMultiplier { get; set; }

        public bool CellStorageWebServiceEnabled { get; set; }

        public bool ChangeLogExpirationEnabled { get; set; }

        public TimeSpan ChangeLogRetentionPeriod { get; set; }

        internal CompatibilityRange CompatibilityRange { get; set; }

        public bool CrossDomainPhotosEnabled { get; set; }

        public int CustomAppErrorLimit { get; set; }

        public uint DailyStartUnthrottledPrivilegedOperationsHour { get; set; }

        public uint DailyStartUnthrottledPrivilegedOperationsMinute { get; set; }

        public uint DailyUnthrottledPrivilegedOperationsDuration { get; set; }

        public int DaysToShowNewIndicator { get; set; }

        public string DefaultQuotaTemplate { get; set; }

        public string DefaultServerComment { get; set; }

        public int DefaultTimeZone { get; set; }

        public string DesignerDownloadUrl { get; set; }

        public bool DisableCoauthoring { get; set; }

        public ulong DiskSizeRequired { get; set; }

        public bool DocumentLibraryCalloutOfficeWebAppPreviewersDisabled { get; set; }

        public bool EmailToNoPermissionWorkflowParticipantsEnabled { get; set; }

        public string[] EnabledClaimProviders { get; set; }

        public TimeSpan EventLogRetentionPeriod { get; set; }

        public bool ExternalWorkflowParticipantsEnabled { get; set; }

        public string FileNotFoundPage { get; set; }

        public bool ForceseekEnabled { get; set; }

        public Guid Id { get; set; }

        internal IisSettings IisSettings { get; set; }

        public string IncomingEmailServerAddress { get; set; }

        public bool InheritDataRetrievalSettings { get; set; }

        public bool IsAdministrationWebApplication { get; set; }

        public bool IsBackwardsCompatible { get; set; }

        public bool LookupDropDownUseStandardControl { get; set; }

        public bool MasterPageReferenceEnabled { get; set; }

        public int MaximumFileSize { get; set; }

        public uint MaxItemsPerThrottledOperation { get; set; }

        public uint MaxItemsPerThrottledOperationOverride { get; set; }

        public uint MaxItemsPerThrottledOperationWarningLevel { get; set; }

        public uint MaxQueryLookupFields { get; set; }

        public long MaxSizeForSelfServiceEvalSiteCreationMB { get; set; }

        public uint MaxUniquePermScopesPerList { get; set; }

        public bool MetaWeblogAuthenticationEnabled { get; set; }

        public bool MetaWeblogEnabled { get; set; }

        public string Name { get; set; }


        public string OfficialFileName { get; set; }

        public string OfficialFileUrl { get; set; }

        public int OutboundMailCodePage { get; set; }

        public string OutboundMailReplyToAddress { get; set; }

        public string OutboundMailSenderAddress { get; set; }

        public bool PresenceEnabled { get; set; }

        public string ReadOnlyMaintenanceLink { get; set; }

        public bool RecycleBinCleanupEnabled { get; set; }

        public bool RecycleBinEnabled { get; set; }

        public int RecycleBinRetentionPeriod { get; set; }

        public bool RenderingFromMetainfoEnabled { get; set; }

        public bool RequireContactForSelfServiceSiteCreation { get; set; }

        public string RequiredDesignerVersion { get; set; }

        public bool ScopeExternalConnectionsToSiteSubscriptions { get; set; }

        public int SecondStageRecycleBinQuota { get; set; }

        public bool SelfServiceCreateIndividualSite { get; set; }

        public string SelfServiceCreationParentSiteUrl { get; set; }

        public string SelfServiceCreationQuotaTemplate { get; set; }

        public bool SelfServiceSiteCreationEnabled { get; set; }

        public string SelfServiceSiteCustomFormUrl { get; set; }

        public bool SendLoginCredentialsByEmail { get; set; }

        public bool SendSiteUpgradeEmails { get; set; }

        public bool SendUnusedSiteCollectionNotifications { get; set; }

        public bool ShowStartASiteMenuItem { get; set; }

        public bool ShowURLStructure { get; set; }

        public int StorageMetricsProcessingDuration { get; set; }

        public string SuiteBarBrandingElementHtml { get; set; }

        public bool SyndicationEnabled { get; set; }

        public bool UnthrottledPrivilegedOperationWindowEnabled { get; set; }

        public TimeSpan UnusedSiteNotificationPeriod { get; set; }

        public int UnusedSiteNotificationsBeforeDeletion { get; set; }

        public int UpgradeEvalSitesRetentionDays { get; set; }

        public string UpgradeMaintenanceLink { get; set; }

        public uint UpgradeReminderDelay { get; set; }

        public bool UseClaimsAuthentication { get; set; }

        public bool UseExternalUrlZoneForAlerts { get; set; }

        public bool? UseIncomingUriToValidateAudience { get; set; }

        public uint? UserDefinedWorkflowMaximumComplexity { get; set; }

        public bool UserDefinedWorkflowsEnabled { get; set; }

        public double UserPhotoErrorExpiration { get; set; }

        public double UserPhotoExpiration { get; set; }

        public bool UserPhotoImportEnabled { get; set; }

        public bool UserPhotoOnlineImportEnabled { get; set; }

        public long Version { get; set; }

        public string[] WebFileExtensions { get; set; }

        public JobDefinition[] JobDefinitions { get; set; }

        public JobHistory[] JobHistoryEntries { get; set; }

        public SerializableDictionary<string, int> MaximumFileSizePerExtension { get; set; }

        public FileMimeMapping[] MimeMappings { get; set; }
    }
}
